package org.dxy.domain.model.aggregate;

import org.dxy.domain.event.DomainEvent;

import java.util.List;

public interface AggregateRoot {

    /**
     * 获取领域事件列表
     * @return 领域事件列表
     * @date: 2025/6/22 17:34
     * @auther dxy
     */
    List<DomainEvent> getDomainEvents();

    /**
     * 添加领域事件
     * @param event 领域事件
     * @date: 2025/6/22 17:34
     * @auther dxy
     */
    void addDomainEvent(DomainEvent event);

    /**
     * 清除领域事件
     * @date: 2025/6/22 17:34
     * @auther dxy
     */
    void clearDomainEvents();

    /**
     * 是否有领域事件
     * @return 是否有领域事件
     * @date: 2025/6/22 17:34
     * @auther dxy
     */
    boolean hasDomainEvents();

    /**
     * 是否没有领域事件
     * @return 是否没有领域事件
     * @date: 2025/6/22 17:34
     * @auther dxy
     */
    boolean hasNoDomainEvents();

}
